package cn.edu.sgu.www.mhxysy.service.repository;

import cn.edu.sgu.www.mhxysy.dto.repository.RoleRepositoryDTO;
import cn.edu.sgu.www.mhxysy.entity.repository.RoleRepository;
import cn.edu.sgu.www.mhxysy.pager.repository.RoleRepositoryPager;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author 沐雨橙风ιε
 * @version 1.0
 */
public interface RoleRepositoryService {

    /**
     * 初始化角色的仓库
     * @param roleId 角色ID
     * @param count 仓库数量
     */
    @Transactional(rollbackFor = Exception.class)
    void init(String roleId, Integer count);

    /**
     * 解锁角色仓库
     * @param roleId 角色ID
     */
    @Transactional(rollbackFor = Exception.class)
    void unlock(String roleId);

    /**
     * 添加角色仓库
     * @param repositoryDTO 角色仓库信息
     */
    @Transactional(rollbackFor = Exception.class)
    void insert(RoleRepositoryDTO repositoryDTO);

    /**
     * 通过ID删除角色仓库
     * @param id 角色仓库ID
     */
    void deleteById(String id);

    /**
     * 通过ID修改角色仓库
     * @param repositoryDTO 角色仓库信息
     */
    void updateById(RoleRepositoryDTO repositoryDTO);

    /**
     * 通过ID修改仓库名字
     * @param id 仓库ID
     * @param name 仓库名称
     */
    void updateNameById(String id, String name);

    /**
     * 查询角色的仓库列表
     * @param roleId 角色ID
     * @return List<RoleRepository>
     */
    List<RoleRepository> selectByRoleId(String roleId);

    /**
     * 分页查询角色仓库列表
     * @param pager 分页参数
     * @return Page<RoleRepository>
     */
    Page<RoleRepository> selectByPage(RoleRepositoryPager pager);
}